A disk drive is a data storage device that stores digital information in concentric tracks on a storage medium, such as a magnetic or optical disk. The data is generally stored in separately addressable data sectors on the tracks of the disk that can each be individually accessed by a host computer as the disk rotates about an axis. To access a particular data sector, the host generally delivers an access request to the disk drive indicating the location of the desired data sector and whether data is to be read from or written to the desired data sector. The disk drive then moves a transducer to the position of the desired data sector and performs the requested operation.
To be able to move the transducer to the required location, a disk drive must include some means for determining the present location of the transducer. Once the present location has been determined, the disk drive can calculate how far the transducer is from the desired data sector and move the transducer accordingly. When the transducer reaches the beginning of the desired data sector, the requested data transfer can take place.
One technique for determining the present location of a transducer involves reading servo positioning information from the disk surface. For example, the disk may include a plurality of servo sectors on each track, each including an "address" that may be read by the transducer. The address may include, for example, a cylinder number identifying the track that the transducer is presently above and a sector number identifying the data sector that the transducer is about to cross over. Using the address information, a servo system determines how the transducer must be moved to access a desired data sector.
A problem with the above described method is that errors may occur while reading the servo information from the disk that result in the reading or writing of data from/to the wrong location on the disk. For example, address information from a servo sector on the disk may be incorrectly read during a seek operation so that the incorrectly read address matches the address of the desired data sector (i.e., the data sector being sought). Data will then be written to or read from an incorrect location on the disk. As data densities on disks increase, the probability of incorrectly reading address information from a disk increases as well.
Another technique for determining the present location of the transducer above the disk involves using software to estimate at least one aspect of the present location of the transducer. This technique is used, for example, in id-less disk drive systems. In an id-less drive, some or all of the address information is left out of the servo portions of the disk. For example, the disk servo sectors may include the cylinder number, but not the sector number. The sector information is determined by software in the disk drive that counts the number of data sectors that have been traversed by the transducer since a known transducer position. The count is then used to determine which data sector the transducer is presently traversing.
As is apparent, the software estimation method of determining present transducer location is also prone to error. For example, in the example above, the transducer may "miss" a data sector as the disk rotates beneath it, thereby corrupting the sector count. Also, calculational errors may occur whereby the present location of the transducer is incorrectly calculated from the various parameters being relied upon by the software. As with the previously described method, errors produced using the present method are increased as disk data densities increase.
Ideally, it is desirable that an error free method of determining the present location of the transducer be found. However, a totally error free method will probably never be discovered, especially since disk data densities are constantly increasing. A need therefore exists for a method of checking data read from the disk drive during a read operation to determine whether it is the data desired by the host. That is, the method should be capable of detecting when data is read from an incorrect location on the disk and/or when data is read from the proper location, but was incorrectly written to that location when originally stored. In addition, it would be advantageous if the method required little or no overhead on the disk surface as low overhead is always a concern in data storage systems.